package router

import (
	"fmt"
	"lsgfish/server/internal/config"
	"lsgfish/server/internal/middleware"
	"lsgfish/server/internal/tool"

	"github.com/gin-gonic/gin"
	swaggerFiles "github.com/swaggo/files"
	ginSwagger "github.com/swaggo/gin-swagger"

	// 必须导入该包才能生成文档
	_ "lsgfish/server/docs"
)

func Run() error {
	r := gin.Default()
	// 添加自定义中间件-校验请求参数字段
	r.Use(middleware.ValidatorMiddleware())

	// 添加标准 Swagger UI 路由 - 提供 JSON 数据
	r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))

	// 添加 Redoc 文档界面 - 提供美观的文档页面
	r.GET("/docs", tool.RedocHandler())

	// swagger 文档访问地址打印
	fmt.Printf("API 文档访问地址：\n")
	fmt.Printf("- Swagger UI: http://localhost%s/swagger/index.html\n", config.Conf.App.Port)
	fmt.Printf("- Redoc UI (推荐): http://localhost%s/docs\n", config.Conf.App.Port)

	// 使用新的路由组织方式
	NewV1Router(r)

	return r.Run(config.Conf.App.Port)
}
